import { defineConfig, loadEnv, ConfigEnv, UserConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import path from 'path';

import pkg from "./package.json";
import dayjs from "dayjs";

const { dependencies, devDependencies, name, version } = pkg;
const __APP_INFO__ = {
	pkg: { dependencies, devDependencies, name, version },
	lastBuildTime: dayjs().format("YYYY-MM-DD HH:mm:ss")
};

export default defineConfig(({ mode } : ConfigEnv) : UserConfig => {
	const env = loadEnv(mode, process.cwd())
	console.log(env.VITE_USER_NODE_ENV) // 获取环境变量
	return {
		base: env.VITE_PUBLIC_PATH, //在一些服务器上，使用绝对目录会导致404，所以我们需要配置为相对目录
		plugins: [vue()],
		envPrefix: ['VITE', 'VUE'],
		// 环境变量前缀,默认只会暴露VITE开头变量，定义后可暴露VUE开头变量
		define: {
			'process.env.VITE_APP_BASE_API': JSON.stringify(env.VITE_APP_BASE_API),
			__APP_INFO__: JSON.stringify(__APP_INFO__)
		},
		resolve: {
			alias: {
				'@': path.resolve(__dirname, './src'),
			},
		},
		server: {
			host: "0.0.0.0",
			port: env.VITE_PORT,
			open: env.VITE_OPEN,
			cors: true,
			proxy: {
				'/api': {
					target: 'http://127.0.0.1:3000',
					// target: 'http://www.zhaowenjing.com:3000', // 你的后端服务器地址
					changeOrigin: true,
					rewrite: (path) => path.replace(/^\/api/, '') // 根据需要调整重写规则
				},
			}
		},
		build: {
			target: 'esnext', // 支持的JavaScript版本
			outDir: 'dist', // 构建时输出目录
			assetsDir: 'assets', // 放置生成的静态资源的目录
			minify: 'terser', // 压缩方式 必须启用,terserOptions配置才会有效
			terserOptions: {
				compress: {// 生产环境时移除console.log调试代码
					drop_console: false, // 是否删除所有的console语句
					drop_debugger: false,
				},
			},
			// 是否为生产环境构建生成source map
			sourcemap: false,
		},
	}
})